package com.yh.correct.shiro;

import java.util.ArrayList;
import java.util.List;

import com.yh.correct.model.vo.Node;

public class TreeUtil {
	/**
	 * 获取菜单树形列表
	 */
	public static List<Node> getTree(List<Node> menus){
		List<Node> root = getRoot(menus);  //获取根节点（获取的值存到list中）
		return buildTree(root,menus);//构建tree
	}
	//构建tree
    public static List<Node> buildTree(List<Node> root,List<Node> menus){
    	for(int i=0;i<root.size();i++){
			List<Node> children =getChildren(menus,root.get(i).getMenuid()); //查询某节点的子节点（获取的是list）
			buildTree(children,menus);	
			root.get(i).setMenus(children);
		}
    	return root;
    }
	
    //获取子节点
    public static List<Node> getChildren(List<Node> menus,int pid){
    	List<Node> children=new ArrayList<Node>();
    	for(Node p:menus){
    		if(p.getPid()==pid){
    			children.add(p);
    		}
    	}
		return children;
    }
    
    //获取根节点
    public static List<Node> getRoot(List<Node> menus){
    	List<Node> root=new ArrayList<Node>();
    	for(Node p:menus){
    		if(p.getPid()==0){
    			root.add(p);
    		}
    	}
		return root;
    }
}
